
#include "merge.h"

#define g() printf("%d: GPIOA=%#X\r\n", __LINE__, GPIO_ReadInputData(GPIOA))

// 无源蜂鸣器，2k~5k 方波驱动，用一下方式也可以驱动，
// 只不过要阻塞程序
// void test_alter_out() {
//     for (;;) {

//         GPIO_WriteBit(GPIOA, GPIO_Pin_1, Bit_SET);
//         delay_us(250);
//         GPIO_WriteBit(GPIOA, GPIO_Pin_1, Bit_RESET);
//         delay_us(250);
//     }
// }

int main() {

    printf_init(9600);
    delay_init();

    // no source ming 2-5k
    // 4k
    TIM2_PWM1_init(18, 1000);

    // 等待10s后OLED初始化
    delay_s(10);
    p();
    OLED_init();
    OLED_clear();
    delay_s(3);
    p();
    // OLED_white_screen();
    // char h[] = "Hello World";
    // OLED_draw_string(0, 0, h, strlen(h));
    // char n[] = "TOMCAT Linking";
    // OLED_draw_string(1, 0, n, strlen(n));
    // int hqyj[] = {0, 1, 2, 3};
    // OLED_draw_hanzi(1, 2, hqyj, sizeof(hqyj) / sizeof(int));

    // int z[] = {4, 5};
    // OLED_draw_hanzi(3, 2, z, sizeof(z) / sizeof(int));

    // OK
    //  for(int i=0;i<8;i++){
    //      for(int j=0;j<16;j++){
    //          OLED_set_pixel(5+i,16+j,1);
    //      }
    //  }
    // OLED_set_all_bytes(0x80);
    // p();

    // int z[] = {4, 5};
    // OLED_draw_hanzi(3, 2, z, sizeof(z) / sizeof(int));
    // char s[] = "Hello World!!!!!";
    // OLED_draw_string(1, 0, s, strlen(s));
    // p();
    // // 后面的会覆盖前面的！！！
    // int z2[] = {6, 7, 8, 9};
    // printf("%d\r\n", sizeof(z2) / sizeof(int));
    // OLED_draw_hanzi(0, 0, z2, sizeof(z2) / sizeof(int));
    // p();
    // delay_s(3);
    // OLED_clear_screen();
    // delay_s(3);
    // char 32 bits
    // c32 t[] = {6, 7, 8, 9};
    // OLED_draw_text_16x16(5, 32, t, sizeof(t) / sizeof(int));
    // p();
    // int z[] = {4, 5};
    // OLED_draw_hanzi(0, 0, z, sizeof(z) / sizeof(int));
    // p();

    // utf-8 encode
    char chs[] = "路 公 交 车";
    while (true) {
        p();
        printf("main running\r\n");
        delay_s(3);
        p();
        for (int i = 0; i < sizeof(chs); i++) {
            printf("%s %d:%#x\r\n", __FILE__, __LINE__, chs[i]);
        }
        delay_s(3);
        // printf("%s %d:%d\r\n", __FILE__, __LINE__, fgetc(stdin));
        // printf("%s %d:%d\r\n", __FILE__, __LINE__, fgetc(stdout));
        // printf("%s %d:%d\r\n", __FILE__, __LINE__, fgetc(stderr));
        // 以下可以使用了，因为串口中断被关闭了
        // int d = -1;
        // scanf("%d", &d);
        // printf("%s %d:%d\r\n", __FILE__, __LINE__, d);
        // delay_s(3);
        // TIM2_BZ_turn_on(true);
        // delay_s(3);
        // TIM2_BZ_turn_on(false);
    }

    return 0;
}
